# 1、有这样的一个列表，深度不可知，列表里面还会嵌套列表，
# 我想要把这个列表从左到右拼接成一个新的列表，且顺序不变
# 举例：[12,33,[11,22,33,[55,66,99]],[55,66]]
# 变成：[12, 33, 11, 22, 33, 55, 66, 99, 55, 66]
"""
def dislist(list1:list):
    result = []
    for i in list1:
        if isinstance(i,list):
            result.extend(dislist(i))
        else:
            result.append(i)
    return result


print(dislist([12, 33, [11, 22, 33, [55, 66, 99]], [55, 66]]))
"""
# 2、编写装饰器，为多个函数加上认证的功能（用户的账号密码）
#  要求登录成功一次，后续的函数都无需输入用户名和密码
"""
tagert = False
def login(func):
    def luoji(*args,**kwargs):
        global tagert
        if tagert:
            print("免密登录")
            func(*args,**kwargs)
        else:
            user = input("输账号")
            password = input("输密码")
            if user == 'admin' and password == "123456":
                print("登陆成功")
                tagert = True
                func(*args,**kwargs)
            else:
                print("账号密码错误")
    return luoji

def mai(goods,price):
    print(f"购买商品为{goods}，价格为{price}")
mai("鞋子",11)
@login
def chi(foods):
    print(f"出去吃{foods}")
chi("麻辣烫")"""
# 3、请实现一个装饰器，把函数的返回值+100然后返回
"""def add(func):
    def luoji(*args,**kwargs):
        r = func(*args,**kwargs)
        r+=100
        return r
    return luoji
@add
def num():
    return 5
print(num())"""

# 4、请实现一个装饰器，通过一次调用使函数重复执行5次
"""def count_5(func):
    def luoji(*args,**kwargs):
        for i in range(5):
            func(*args,**kwargs)
    return luoji
@count_5
def tq():
    print("阳光明媚啊刘桑")
tq()
"""
# 5、输入任意个字符串,分别实现从小到大输出和从大到小输出
"""def sort_str(obj:str)->tuple:
    list1 = []
    try:
        for i in obj:
            list1.append(int(i))
    except:
        print("有非数字字符")
    j = sorted(list1,reverse=True)
    s = sorted(list1)
    str1 = ""
    str2 = ""
    for i in j:
        str1 += str(i)
    for i  in s :
        str2 += str(i)
    return str2,str1
print(sort_str("123456789"))"""

# 6、接收n个数字，求这些参数数字的和
"""def sum(*n):
    sum_r = 0
    for i in n:
        sum_r+=i
    return sum_r
print(sum(1, 2, 3, 4))"""

# 7、编写一个函数，实现数字的自增（从0开始，每调用一次，数字+1）
def add_num():
    num = 0
    def luoji():
        nonlocal num
        num += 1
        return num
    return luoji

a = add_num()
print(a)
print(a())
print(a())
print(a())
